Computerized gaming system, method and apparatus

ABSTRACT

The present invention in various embodiments provides a computerized wagering game method and apparatus that features an operating system kernel, a system handler application that loads and executes gaming program shared objects and features nonvolatile storage that facilitates sharing of information between gaming program objects. The system handler of some embodiments further provides an API library of functions callable from the gaming program objects, and facilitates the use of callback functions on change of data stored in nonvolatile storage. The nonvolatile storage also provides a nonvolatile record of the state of the computerized wagering game, providing protection against loss of the game state due to power loss. The system handler application in various embodiments includes a plurality of device handlers, providing an interface to selected hardware and the ability to monitor hardware-related events.

FIELD OF THE INVENTION

The invention relates generally to computerized gaming systems, and morespecifically to a game code and operating system method and apparatusfor use within computerized gaming systems.

NOTICE OF CO-PENDING APPLICATIONS

This application is related to co-pending application Ser. No.09/405,921 filed Sep. 24, 1999, and to co-pending application Ser. No.09/520,405, filed Mar. 8, 2000, which are hereby incorporated byreference.

BACKGROUND OF THE INVENTION

Games of chance have been enjoyed by people for thousands of years andhave enjoyed increased and widespread popularity in recent times. Aswith most forms of entertainment, players enjoy playing a wide varietyof games and new games. Playing new games adds to the excitement of“gaming.” As is well known in the art and as used herein, the term“gaming” and “gaming devices” are used to indicate that some form ofwagering is involved, and that players must make wagers of value,whether actual currency or some equivalent of value, e.g., token orcredit.

One popular game of chance is the slot machine. Conventionally, a slotmachine is configured for a player to wager something of value, e.g.,currency, house token, established credit or other representation ofcurrency or credit. After the wager has been made, the player activatesthe slot machine to cause a random event to occur. The player wagersthat particular random events will occur that will return value to theplayer. A standard device causes a plurality of reels to spin andultimately stop, displaying a random combination of some form ofindicia, for example, numbers or symbols. If this display contains oneof a pre-selected plurality of winning combinations, the machinereleases money into a payout chute or increments a credit meter by theamount won by the player. For example, if a player initially wagered twocoins of a specific denomination and that player achieved a payout, thatplayer may receive the same number or multiples of the wager amount incoins of the same denomination as wagered.

There are many different formats for generating the random display ofevents that can occur to determine payouts in wagering devices. Thestandard or original format was the use of three reels with symbolsdistributed over the face of the wheel. When the three reels were spun,they would eventually each stop in turn, displaying a combination ofthree symbols (e.g., with three wheels and the use of a single payoutline as a row in the middle of the area where the symbols aredisplayed). By appropriately distributing and varying the symbols oneach of the reels, the random occurrence of predetermined winningcombinations can be provided in mathematically predeterminedprobabilities. By clearly providing for specific probabilities for eachof the pre-selected winning outcomes, precise odds that would controlthe amount of the payout for any particular combination and thepercentage return on wagers for the house could be readily controlled.

Other formats of gaming apparatus that have developed in a progressionfrom the pure slot machine with three reels have dramatically increasedwith the development of video gaming apparatus. Rather than have onlymechanical elements such as wheels or reels that turn and stop torandomly display symbols, video gaming apparatus and the rapidlyincreasing sophistication in hardware and software have enabled anexplosion of new and exciting gaming apparatus. The earlier videoapparatus merely imitated or simulated the mechanical slot games in thebelief that players would want to play only the same games. Early videogames therefore were simulated slot machines. The use of video gamingapparatus to play new games such as draw poker and Keno broke the groundfor the realization that there were many untapped formats for gamingapparatus. Now casinos may have hundreds of different types of gamingapparatus with an equal number of significant differences in play. Theapparatus may vary from traditional three reel slot machines with asingle payout line, video simulations of three reel video slot machines,to five reel, five column simulated slot machines with a choice oftwenty or more distinct paylines, including randomly placed lines,scatter pays, or single image payouts. In addition to the variation informats for the play of games, bonus plays, bonus awards, andprogressive jackpots have been introduced with great success. Thebonuses may be associated with the play of games that are quite distinctfrom the play of the original game, such as the video display of a horserace with “bets” on the individual horses randomly assigned to playersthat qualify for a bonus, the spinning of a random wheel with fixedamounts of a bonus payout on the wheel (or simulation thereof), orattempting to select a random card that is of higher value than a cardexposed on behalf of a virtual “dealer.”

Examples of such gaming apparatus with a distinct bonus feature includesU.S. Pat. Nos. 5,823,874; 5,848,932; 5,836,041; U.K. Patent Nos. 2 201821 A; 2 202 984 A; and 2 072 395A; and German Patent DE 40 14 477 A1.Each of these patents differ in fairly subtle ways as to the manner inwhich the bonus round is played. British patent 2 201 821 A and DE 37 00861 A1 describe a gaming apparatus in which after a winning outcome isfirst achieved in a reel-type gaming segment, a second segment isengaged to determine the amount of money or extra games awarded. Thesecond segment gaming play involves a spinning wheel with awards listedthereon (e.g., the number of coins or number of extra plays) and aspinning arrow that will point to segments of the wheel with the valuesof the awards thereon. A player will press a stop button and the arrowwill point to one of the values. The specification indicates both thatthere is a level of skill possibly involved in the stopping of the wheeland the arrow(s), and also that an associated computer operates therandom selection of the rotatable numbers and determines the results inthe additional winning game, which indicates some level of randomselection in the second gaming segment.

U.S. Pat. Nos. 5,823,874 and 5,848,932 describe a gaming devicecomprising: a first, standard gaming unit for displaying a randomlyselected combination of indicia, said displayed indicia selected fromthe group consisting of reels, indicia of reels, indicia of playingcards, and combinations thereof; means for generating at least onesignal corresponding to at least one select display of indicia by saidfirst, standard gaming unit; means for providing at least onediscernible indicia of a mechanical bonus indicator, said discernibleindicia indicating at least one of a plurality of possible bonuses,wherein said providing means is operatively connected to said first,standard gaming unit and becomes actuatable in response to said signal.In effect, the second gaming event simulates a mechanical bonusindicator such as a roulette wheel or wheel with a pointing element.

A video terminal is another form of gaming device. Video terminalsoperate in the same manner as a conventional slot and video machine,except that a redemption ticket rather than an immediate payout isdispensed.

The vast array of electronic video gaming apparatus that is commerciallyavailable is not standardized within the industry or necessarily evenwithin the commercial line of apparatus available from a singlemanufacturer. One of the reasons for this lack of uniformity orstandardization is the fact that the operating systems that have beenused to date in the industry are primitive. As a result, the programmermust often create code for each and every function performed by eachindividual apparatus.

Attempts have been made to create a universal gaming engine for a gamingmachine and is described in Carlson U.S. Pat. No. 5,707,286. This patentdescribes a universal gaming engine that segregates the random numbergenerator and transform algorithms so that this code need not berewritten or retested with each new game application. All code that isused to generate a particular game is contained in a rule EPROM in therules library 108. Although the step of segregating random numbergenerator code and transform algorithms has reduced the development timeof new games, further improvements are needed.

One significant economic disadvantageous feature with commercial videowagering gaming units that maintains an artificially high price for thesystems in the market is the use of unique hardware interfaces in thevarious manufactured video gaming systems. The different hardware, thedifferent access codes, the different pin couplings, the differentharnesses for coupling of pins, the different functions provided fromthe various pins, and the other various and different configurationswithin the systems has prevented any standard from developing within thetechnical field. This is advantageous to the equipment manufacturer,because the games for each system are provided exclusively by a singlemanufacturer, and the entire systems can be readily obsoleted, so thatthe market will have to purchase a complete unit rather than merelyreplacement software, and aftermarket game designers cannot easilyprovide a single game that can be played on different hardware.

The invention of computerized gaming systems that include a common or“universal” video wagering game controller that can be installed in abroad range of video gaming apparatus without substantial modificationto the game controller has made possible the standardization of manycomponents and of corresponding gaming software within gaming systems.Such systems desirably will have functions and features that arespecifically tailored to the unique demands of supporting a variety ofgames and gaming apparatus types, and doing so in a manner that isefficient, secure, and cost-effective to operate.

What is desired is an architecture and method providing agaming-specific platform that features reduced game development time andefficient game operation, provides security for the electronic gamingsystem, and does so in a manner that is cost-effective for game softwaredevelopers, gaming apparatus manufacturers, and gaming apparatus users.An additional advantage is that the use of the platform will speed thereview and approval process for games with the various gaming agencies,bringing the games to market sooner.

SUMMARY OF THE INVENTION

The present invention in various embodiments provides a computerizedwagering game method and apparatus that features an operating systemkernel that may include selected device handlers that are disabled orremoved. The present invention features a system handler applicationthat is part of the operating system. The system handler loads andexecutes gaming program objects and features nonvolatile storage thatfacilitates sharing of information between gaming program objects. Thesystem handler of some embodiments further provides an API library offunctions callable from the gaming program shared objects, andfacilitates the use of callback functions on change of data stored in anonvolatile storage. A nonvolatile record of the state of thecomputerized wagering game is stored on the nonvolatile storage,providing protection against loss of the game status due to power loss.The system handler application in various embodiments includes aplurality of handlers, providing an interface to selected hardware andthe ability to monitor hardware-related events.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 shows a computerized wagering game apparatus as may be used topractice an embodiment of the present invention.

FIG. 2 shows a more detailed structure of program code executed on acomputerized wagering game apparatus, consistent with an embodiment ofthe present invention.

FIG. 3 is a diagram illustrating another exemplary embodiment of auniversal gaming system according to the present invention having auniversal or open operating system.

FIG. 4 is a diagram illustrating one exemplary embodiment of a method ofconverting a gaming system to a gaming system having an open operatingsystem according to the present invention.

FIG. 5 is a diagram illustrating one exemplary embodiment of a set ofdevices used for interfacing with a device driver or handler in an openoperating system in a gaming system according to the present invention.

FIG. 6 is a diagram illustrating one exemplary embodiment of a resourcemanager used in a gaming system according to the present invention.

FIG. 7 is a diagram of a table illustrating one exemplary embodiment ofa resource file used in a gaming system according to the presentinvention.

FIG. 8 is a diagram illustrating one exemplary embodiment of convertinga cash, coin or token-based gaming system to a cashless gaming systemusing the universal gaming system according to the present invention.

FIG. 9 is a diagram illustrating one exemplary embodiment of configuringa game usable in a gaming system according to the present invention.

FIG. 10 is a diagram illustrating another exemplary embodiment ofconfiguring and/or storing a game on a removable media useable in agaming system according to the present invention.

FIG. 11 is a diagram illustrating another exemplary embodiment of agaming system according to the present invention wherein the game layeris programmable or configurable via a web page at a location remote fromthe gaming system.

FIG. 12 is a diagram illustrating one exemplary embodiment of a web pagetemplate used in the gaming system shown in FIG. 11.

FIG. 13 is a diagram illustrating one exemplary embodiment ofnonvolatile memory used in a gaming system according to the presentinvention, wherein the nonvolatile memory is configured as a RAIDsystem.

DETAILED DESCRIPTION

In the following detailed description of sample embodiments of theinvention, reference is made to the accompanying drawings which form apart hereof, and in which is shown by way of illustration specificsample embodiments in which the invention may be practiced. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice the invention, and it is to be understood thatother embodiments may be utilized and that logical, mechanical,electrical, and other changes may be made without departing from thespirit or scope of the present invention. The following detaileddescription is, therefore, not to be taken in a limiting sense, and thescope of the invention is defined only by the appended claims.

Definitions

For purposes of this disclosure, the following terms have specializedmeaning, and are defined below:

“Memory” for purposes of this disclosure is defined as any type of mediacapable of read/write capability. Examples of memory are RAM, tape andfloppy disc.

“Shared Objects” for purposes of this disclosure are defined asself-contained, functional units of game code that define a particularfeature set or sequence of operation for a game. The personality andbehavior of a gaming machine of the present invention are defined by theparticular set of shared objects called and executed by the operatingsystem. Within a single game, numerous shared objects may be dynamicallyloaded and executed. This definition is in contrast with theconventional meaning of a shared object, which typically provides an APIto multiple programs.

“Architecture” for purposes of this disclosure is defined as software,hardware or both.

“Dynamic Linking” for purposes of this disclosure is defined as linkingat run time.

“API” for purposes of this disclosure is an Application ProgrammingInterface. The API includes a library of functions.

“System Handler” for purposes of this disclosure is defined as acollection of code written to control non-game specific device handlers.Examples of device handlers include I/O, sound, video, touch screen,nonvolatile RAM and network devices.

“Gaming Data Variables” for purposes of this disclosure includes at aminimum any or all data needed to reconstruct the game state in theevent of a power loss.

“Game.State File” for purposes of this disclosure is a template forcreating a look-up list of information stored in NV RAM.

The present invention provides a computerized gaming system method andapparatus that have novel gaming-specific features that improvesecurity, make development of game code more efficient, and do so usingan apparatus and software methods that are cost-effective and efficient.The present invention also reduces the amount of effort required toevaluate and review new game designs by gaming regulators, because theamount of code to be reviewed for each game is reduced by as much as 80%over known, machine-specific architecture. The invention provides, invarious embodiments, features such as a nonvolatile memory for storinggaming application variables and game state information, provides ashared object architecture that allows individual game objects to beloaded and to call common functions provided by a system handlerapplication, and in one embodiment provides a custom operating systemkernel that has selected device handlers disabled.

FIG. 1 shows an exemplary gaming system 100, illustrating a variety ofcomponents typically found in gaming systems and how they may be used inaccordance with the present invention. User interface devices in thisgaming system include push buttons 101, joystick 102, and pull arm 103.Credit for wagering maybe established via coin or token slot 104, adevice 105 such as a bill receiver or card reader, or any other creditinput device. A card reader 105 may also provide the ability to recordcredit information on a user's card when the user has completed gaming,or credit may be returned via a coin tray 106 or other credit returndevice. Information is provided to the user by devices such as videoscreen 107, which may be a cathode ray tube (CRT), liquid crystaldisplay (LCD) panel, plasma display, light-emitting diode (LED) display,mechanical reels or wheels or other display device that produces avisual image under control of the computerized game controller. Also,buttons 101 may be lighted to indicate what buttons may be used toprovide valid input to the game system at any point in the game. Stillother lights or other visual indicators may be provided to indicate gameinformation or for other purposes such as to attract the attention ofprospective game users. Sound is provided via speakers 108, and also maybe used to indicate game status, to attract prospective game users, toprovide player instructions or for other purposes, under the control ofthe computerized game controller.

The gaming system 100 further comprises a computerized game controller111 and I/O interface 112, connected via a wiring harness 113. Theuniversal game controller 111 need not have its software or hardwaredesigned to conform to the interface requirements of various gamingsystem user interface assemblies, but can be designed once and cancontrol various gaming systems via the use of machine-specific I/Ointerfaces 112 designed to properly interface an input and/or output ofthe universal computerized game controller to the harness assembliesfound within the various gaming systems.

In some embodiments, the universal game controller 111 is a standard IBMPersonal Computer-compatible (PC compatible) computer. Still otherembodiments of a universal game controller comprise general purposecomputer systems such as embedded controller boards or modular computersystems. Examples of such embodiments include a PC compatible computerwith a PC/104 bus that is an example of a modular computer system thatfeatures a compact size and low power consumption while retaining PCsoftware and hardware compatibility. The universal game controller 111provides all functions necessary to implement a wide variety of games byloading various program code on the universal controller, therebyproviding a common platform for game development and delivery tocustomers for use in a variety of gaming systems. Other universalcomputerized game controllers consistent with the present invention mayinclude any general-purpose computers that are capable of supporting avariety of gaming system software, such as universal controllersoptimized for cost effectiveness in gaming applications or that containother special-purpose elements yet retain the ability to load andexecute a variety of gaming software. Examples of special purposeelements include elements that are heat resistant and are designed tooperate under less than optimal environments that might containsubstances such as dust, smoke, heat and moisture. Special purposeelements are also more reliable when used 24 hours per day, as is thecase with most gaming applications.

The computerized game controller of some embodiments is a computerrunning an operating system with a gaming application-specific kernel.In further embodiments, a game engine layer of code executes within anon-application specific kernel, providing common game functionality.The gaming program shared object in such embodiments is therefore only afraction of the total code, and relies on the game engine layer andoperating system kernel to provide a library of gaming functions. Apreferred operating system kernel is the public domain Linux 2.2 kernelavailable on the Internet. Still other embodiments will have variouslevels of application code, ranging from embodiments containing severallayers of game-specific code to a single-layer of game software runningwithout an operating system or kernel but providing its own computersystem management capability.

FIG. 2 illustrates the structure of one exemplary embodiment of theinvention, as may be practiced on a computerized gaming system such asthat of FIG. 1. The invention includes an operating system 300,including an operating system kernel 201 and a system handlerapplication 202. An operating system kernel 201 is first executed, afterwhich a system handler application 202 is loaded and executed. Thesystem handler application in some embodiments may load a gaming programshared object 203, and may initialize the game based on gaming datavariables stored in nonvolatile storage 204. In some embodiments, thegaming data variables are further loaded into a Game.State data file orother data storage device 205, which reflects the data stored innonvolatile storage 204. The nonvolatile RAM (NV-RAM) according to theinvention has read/write capability. The gaming program object in someembodiments calls separate API functions 206, such as sound functionsthat enable the gaming apparatus to produce sound effects and music.

The OS kernel 201 in some embodiments may be a Linux kernel, but inalternate embodiments may be any other operating system providing asimilar function. The Linux 2.2 operating system kernel in some furtherembodiments may be modified for adaptation to gaming architecture.Modifications may comprise erasing or removing selected code from thekernel, modifying code within the kernel, adding code to the kernel orperforming any other action that renders the device handler codeinoperable in normal kernel operation. By modifying the kernel in someembodiments of the invention, the function of the computerized gamingapparatus can be enhanced by incorporating security features, forexample. In an embodiment, all modifications to the kernel are modular.

For example, as described in my co-pending application Ser. No.10/182,534, entitled “Encryption in a Secure Computerized Gaming System”filed on the same date as the present application, several functions areincorporated into the kernel to verify that the operating system andshared object code have not changed, and that no new code has beenincorporated into the operating system code or shared object code.

In one embodiment, the kernel is modified so that it executes user levelcode out of ROM. The use of the Linux operating system lends itself tothis application because the source code is readily available. Otheroperating systems such as Windows and DOS are other suitable operatingsystems.

Embodiments of the invention include hard real time code 310 beneath thekernel providing real time response such as fast response time tointerrupts. The hard real time code 310 is part of the operating systemin one embodiment.

In an embodiment of the invention, all user interface peripherals suchas keyboards, joysticks and the like are not connected to thearchitecture so that the operating system and shared objects retainexclusive control over the gaming machine. In another embodiment,selected device handlers are disabled so that the use of a keyboard, forexample, is not possible. It is more desirable to retain thisfunctionality so that user peripherals can be attached to service themachine. It might also be desirable to attach additional userperipherals such as tracking balls, light guns, light pens and the like.

In another embodiment, the kernel is modified to zero out all unusedRAM. This function eliminates code that has been insertedunintentionally, such as through a Trojan horse, for example.

In one embodiment, the kernel and operating system are modified to hashthe system handler and shared object or gaming program object code, andto hash the kernel code itself. These functions in different embodimentsare performed continuously, or at a predetermined frequency.

The system handler application is loaded and executed after loading theoperating system, and manages the various gaming program shared objects.In further embodiments, the system handler application provides a userApplication Program Interface (API) 206, that includes a library ofgaming functions used by one or more of the shared objects 210. Forexample, the API in one embodiment includes functions that controlgraphics, such as color, screen commands, font settings, characterstrings, 3-D effects, etc. The device handlers 210 are preferablyhandled by an event queue 320. The event queue schedules the eventhandlers in sequence. The shared object 203 calls the APIs 206 in oneembodiment. The system handler application 202 in various embodimentsalso manages writing of data variables to the “game.state” file 205stored in the nonvolatile storage 204, and further manages calling anycallback functions associated with each data variable changed.

The system handler 202 application of some embodiments may manage thegaming program shared objects by loading a single object at a time andexecuting the object. When another object needs to be loaded andexecuted, the current object may remain loaded or can be unloaded andthe new object loaded in its place before the new object is executed.The various shared objects can pass data between objects by storing thedata in nonvolatile storage 204, utilizing a game.state data storagedevice 205. For example, a “game.so” file may be a gaming program objectfile that is loaded and executed to provide operation of a feature setof a computerized wagering game, as a “bonus.so” gaming program objectfile is loaded and executed to provide a feature set of the bonussegment of play. Upon changing from normal game operation to bonus, thebonus.so is loaded and executed upon loading. Because the relevant dataused by each gaming program object file in this example is stored innonvolatile storage 204, the data may be accessed as needed by whatevergaming program object is currently loaded and executing.

The system handler application in some embodiments provides an API thatcomprises a library of gaming functions, enabling both easy andcontrolled access to various commonly used functions of the gamingsystem. Providing a payout in the event of a winning round of game play,for example, may be accomplished via a payout function that provides theapplication designer's only access to the hardware that pays out creditor money. Restrictions on the payout function, such as automaticallyreducing credits stored in nonvolatile storage each time a payout ismade, may be employed in some embodiments of the invention to ensureproper and secure management of credits by the computerized gamingsystem. The functions of the API may be provided by the developer aspart of the system handler application, and may be a part of thesoftware provided in the system handler application package. The APIfunctions may be updated as needed by the provider of the system handlerapplication to provide new gaming functions as desired. In someembodiments, the API may simply provide functions that are commonlyneeded in gaming, such as computation of odds or random numbers, aninterface to peripheral devices, or management of cards, reels, videooutput or other similar functions.

The system handler application 202 in various embodiments also comprisesa plurality of device handlers 210, that monitor for various events andprovide a software interface to various hardware devices. For example,some embodiments of the invention have handlers for nonvolatile memory212, one or more I/O devices 214, a graphics engine 216, a sound device218, or a touch screen 220. Also, gaming-specific devices such as a pullarm, credit receiving device or credit payout device may be handled viaa device handler 222. Other peripheral devices may be handled withsimilar device handlers, and are to be considered within the scope ofthe invention. In one embodiment, the device handlers are separated intotwo types. The two types are: soft real time 210A and regular devicehandlers 210B. The two types of device handlers operate differently. Thesoft real time handler 210A constantly runs and the other handler 210Bruns in response to events.

The nonvolatile storage 204 used to store data variables may be a fileon a hard disc, may be nonvolatile memory, or may be any other storagedevice that does not lose the data stored thereon upon loss of power. Inone embodiment the nonvolatile storage in battery-backed RAM. Thenonvolatile storage in some embodiments may be encrypted to ensure thatthe data variables stored therein cannot be corrupted. Some embodimentsmay further include a game.state file 205, which provides a look-uptable for the game data stored in nonvolatile storage 204. Thegame.state file is typically parsed prior to execution of the sharedobject file. The operating system creates a map of NVRAM by parsing thegame.state file. The look-up table is stored in RAM. This look-up tableis used to access and modify game data that resides in NVRAM 204. Thisgame data can also be stored on other types of memory.

In some embodiments, a duplicate copy of the game data stored in NVRAM204 resides at another location in the NVRAM memory. In anotherembodiment, a duplicate copy of the game data is copied to anotherstorage device. In yet another embodiment, two copies of the game datareside on the NVRAM and a third copy resides on a separate storagedevice. In yet another embodiment, three copies of the game data residein memory. Extra copies of the game data are required by gamingregulations in some jurisdictions.

Data written to the game state device must also be written to thenonvolatile storage device, unless the game state data device is alsononvolatile, to ensure that the data stored is not lost in the event ofa power loss. For example, a hard disc in one embodiment stores agame.state file that contains an unencrypted and nonvolatile record ofthe encrypted data variables in nonvolatile storage flash programmablememory (not shown). Data variables written in the course of gameoperation are written to the game.state file, which may be encrypted andstored in the nonvolatile storage 204, upon normal shutdown. Loss ofpower leaves a valid copy of the most recent data variables in thegame.state file, which may be used in place of the data in NVRAM in theevent of an abnormal shutdown.

In an alternate embodiment, a game state device 205 such as a game.statefile stored on a hard disc drive provides variable names or tags andcorresponding locations in nonvolatile storage 204, in effect, providinga variable map of the nonvolatile storage. In one such embodiment, thenonvolatile storage may then be parsed using the data in the game statefile 205, which permits access to the variable name associated with aparticular nonvolatile storage location. Such a method permits access toand handling of data stored in nonvolatile storage using variable namesstored in the game state file 205, allowing use of a generic nonvolatilestorage driver where the contents of the nonvolatile storage aregame-specific. Other configurations of nonvolatile storage such as asingle nonvolatile storage are also contemplated, and are to beconsidered within the scope of the invention.

Callback functions that are managed in some embodiments by the systemhandler application 202 are triggered by changing variables stored inNVRAM 204. For each variable, a corresponding function may be calledthat performs an action in response to the changed variable. Forexample, every change to a “credits” variable in some embodiments callsa “display_credits” function that updates the credits as displayed tothe user on a video screen. The callback function may be a functionprovided by the current gaming program shared object or can call adifferent gaming program object.

The gaming program's shared objects in some embodiments of the inventiondefine the personality and function of the game. Program objects providedifferent game functions, such as bookkeeping, game operation, gamesetup and configuration functions, bonus displays and other functions asnecessary. The gaming program objects in some embodiments of theinvention are loaded and executed one at a time, and share data onlythrough NVRAM 204 or another game data storage device. The previousexample of unloading a game.so gaming program object and replacing itwith a bonus.so file to perform bonus functions is an example of suchuse of multiple gaming program shared objects.

Each gaming program object may require certain game data to be presentin NVRAM 204, and to be usable from within the executing gaming programshared object 203. The game data may include meter information forbookkeeping, data to recreate game on power loss, game history, currencyhistory, credit information, and ticket printing history, for example.These files do not include operable code or functions.

The operating system of the present application is not limited to use ingaming machines. It is the shared object library rather than theoperating system itself that defines the personality and character ofthe game. The operating system of the present invention can be used withother types of shared object libraries for other purposes.

For example, the operating system of the present invention can be usedto control networked on-line systems such as progressive controllers andplayer tracking systems. The operating system could also be used forkiosk displays or for creating “picture in picture” features in gamingmachines. A gaming machine could be configured so that a video slotplayer could place a bet in the sports book, then watch the sportingevent in the “picture in picture” feature while playing his favoriteslot game.

The present invention provides a computerized gaming apparatus andmethod that provides a gaming-specific platform that features reducedgame development time and efficient game operation via the use of asystem handler application that can manage independent gaming programobjects and gaming-specific API, provides game functionality to theoperating system kernel, provides security for the electronic gamingsystem via the nonvolatile storage and other security features of thesystem, and does so in an efficient manner that makes development of newsoftware games relatively easy. Production and management of a gamingapparatus is also simplified, due to the system handler application APIlibrary of gaming functions and common development platform provided bythe invention.

FIG. 3 is a diagram illustrating one exemplary embodiment of a gamingsystem 400 according to the present invention including universaloperating system 300. As previously described herein, game layer 402include gaming program shared objects 203 which are specific to the typeof game being played on gaming system 400. Exemplary game objects ormodules include paytable.so 406, help.so 408 and game.so 410. Game layer402 also includes other game specific independent modules 412. Gameengine 404 provides an interface between game layer 402 and universaloperating system 300. The game engine 404 provides an additionalapplication programming interface to the game layer application. Thegame engine automates core event handling for communicating with thegame operating system 300, and which are not configurable via thespecific game layer game code. The game engine 404 also provideshousekeeping and game state machine functions. The game layer objects203 and/or modules 406 may also directly call user API 206.

As previously described herein universal operating system 300 is an openoperating system which allows for conversion of the gaming system 400into different types of games, and also allows for future expandabilityand upgrading of associated hardware in the gaming system 400 due to itsopen architecture operating system.

In operating system 300, device handlers 210 provide the interfacebetween the operating system 300 and external gaming system input andoutput devices, such as a button panel, bill acceptor, coin acceptor,mechanical arm, reels, speaker, tower lights, etc. Each device handler210 is autonomous to the other. The device handlers or drivers 210operate as protocol managers which receive information from a gamingsystem device (typically in the gaming system device protocol) andconverts the information to a common open operating system protocolusable by operating system 300. Similarly, the device drivers orhandlers 210 receive information from the open operating system andconvert the information to a gaming device specific protocol. Thespecific device handlers or drivers used are dependent upon what gameyou are using, and may be loadable or unloadable as independent,separate objects or modules. The exemplary embodiment shown includestotal I/O device handler 414, sound device handler 416, serial devicehandler 418, graphics device handler 420, memory manager device handler422, NVRAM device handler 424, protocols device handler 426, resourcemanager device handler 428 and network device handler 430. Othersuitable device handlers for adapting the operating system 300 to othergaming systems will become apparent to one skilled in the art afterreading the present application.

FIG. 4 is a diagram illustrating one exemplary embodiment of a method ofconverting an existing gaming operating system to a gaming system 400having an open operating system 300 according to the present invention.The gaming system 400 according to the present invention. The gamingsystem 400 according to the present invention is suitable for convertingboth video based gaming systems and also electrical/mechanical basedoperating system, such as a mechanical reel based slot machine. Once theexisting game operating system has been changed over to a universalgaming system 400 having a universal operating system 300 according tothe present invention, the type of game itself may be changed viachanging out the game specific code in the game layer 402.

At 450, the existing game operating system is removed from the game. Theexisting game operating system is typically a proprietary operatingsystem consisting of computer hardware and software which is specific tothe game being changed out. At 452, a universal gaming system 402including an open operating system 300 is installed in the game. At 454,functional interfaces are provided between the open operating system andthe existing gaming system devices. At 456, a game specific program(i.e., game layer 402) is installed in the universal gaming system. Thegame specific program is configured to communicate with the openoperating system 300.

In one exemplary embodiment, the gaming system according to the presentinvention is used in a mechanical reel-based slot machine, either in anew slot machine or in converting an existing slot machine to an openoperating system according to the present invention. Exemplaryconventional reel-based slot machines include an IGT S-plus slot machineor a Bally slot machine.

FIG. 5 is a diagram illustrating one exemplary embodiment of I/O deviceswhich must be functionally interfaced within adopting gaming system 402to a reel-based game. The exemplary embodiment shown includes deviceswhich interface with a digit I/O device driver. In one embodiment, inputdevices 462 includes a button panel device 466, a mechanical arm device468, a bill acceptor device 470, and a coin acceptor device 472. Each ofthe input devices 462 receives information from the specific gamedevices and provides the information to the gaming system 400 via theI/O device driver.

Output devices 464 receive information from operating system 300 whichprovides an output via the I/O device driver to gaming devices 464. Inthe example shown, output devices 464 include reels device 474 whichreceives an output to the stepper motors controlling the reels. Creditdisplays device 466 which receives an output to the LED driven creditdisplays. Speaker device 478 which receives a sound output to the gamespeakers. On-line system protocol devices 480 which is a communicationinterface between the open operating system 300 and the game on-linesystem. Tower lights devices 42 which receives an interface between theopen operating system 300 and the game tower lights.

FIG. 6 is a diagram illustrating one exemplary embodiment of a resourcemanager used in a gaming system according to the present invention. Theresource manager 500 is a software module which receive a resourceconfiguration file 502 and stores it in memory 504. In one aspect,memory 504 is stored in nonvolatile memory, which in one embodiment isflash memory. The resource manager parses the resource configurationfile and stores individual resources in memory for fast recall.

In one embodiment, the resource manager 500 stores the file 506 in theform of a lookup table. In one preferred embodiment, the resourcemanager reads the configuration files at startup, parses theconfiguration files and stores them in memory 504. The resource managerfile 506 may then be accessed by the rest of the operating system 300software applications. The resource manager operates to map digital I/Olines, corn ports, game specific resources, kernal modules to load, etc.

FIG. 7 is a diagram of a table illustrating one exemplary embodiment ofa portion of a resource file 506 according to the present invention. Theresource manager 500 operates to map the input/output (I/O) line to theoperating system resources. Instead of changing pin locations fordifferent games, the resource manger provides for mapping of I/O linesvia software. In one aspect, 64, I/O (X8) lines are mapped to thevarious operating system resources. In one aspect, the I/O line at PIN1510 is mapped to resource R20 512; and PIN2 514 is mapped to resource R3516; PIN3 518 is mapped to resource R38 520; PIN4 522 is mapped toresource R10 524; PIN5 526 is mapped to resource R11 528; PIN6 530 ismapped to resource R12 532; PIN7 534 is mapped to resource R13 536; andPINN 538 is mapped to resource R51 540, etc.

The gaming system 400 according to the present invention is adaptablefor use as a cashless gaming system. As such, it is useable forconverting existing coin-based or token-based gaming systems into acashless gaming system.

FIG. 8 is a diagram illustrating one exemplary embodiment of convertingcash, coin, or token-based gaming system to a cashless gaming systemusing the universal gaming system 400 according to the presentinvention. References also made to FIGS. 1-7 previously describedherein. A card reader or coupon acceptor 550 and ticket printer 552 areadded to the game. The card reader 550 and ticket printer 552 are easilyadaptable to interface with the gaming system 400 according to thepresent invention. In particular, card reader device driver 554 is addedto open operating system 300 to enable card reader 550 to communicatewith the operating system. Similarly, a ticket printer device driver 556is added to the operating system 300 in order to allow ticket printer552 to communicate with the operating system. For example, an existingcash-based reel slot machine can be converted according to the presentinvention to a cashless gaming system. The card reader 550 can operateto read credit cards, magnetic strip based cards, or accept couponswhich includes credits such as promotional gaming credits received froma casino. The card or coupons may be obtainable from a central or kiosklocation. Once play is complete on the gaming system 400, the ticketprinter 556 is operable to print a ticket representative of the amountof credits or money won on the gaming system. The ticket 560 may then beused as a card or coupon in another gaming system, or alternatively, maybe turned in at a kiosk or central location for money.

FIG. 9 is a diagram illustrating another exemplary embodiment of thegaming system 400 according to the present invention. Due to the openoperating system 300, game layer 402 may be configurable remote from thegaming system 400, such as on a remote computer or laptop computer 580.Game layer 402 is constructed into game objects or modules 302. As such,templates for specific types of games are configured to allow a gameprogrammer to specify game specific configurable options from a remotecomputer 580. In another aspect, game specific modules are created onthe remote computer 580. The game layer is then assembled andtransferred into memory 582. In one aspect, memory 582 is nonvolatilememory located in the gaming system 400. In one aspect, the nonvolatilememory is flash memory. In one exemplary embodiment, the flash memory isa “Disk on a Chip”, wherein the game layer 402 is downloaded from theremote computer 580 onto the disk on a chip 582.

FIG. 10 is a diagram illustrating another exemplary embodiment ofprogramming and/or configuring a game layer at a location remote fromthe gaming system 400. In this embodiment, game layer 402 is programmedor configured on remote computer 580. After completion of configuringand/or programming game layer 402, the game layer 402 is transferred viaremote computer 580 to a removable media 584. In one preferredembodiment, the removable media is a flash memory card, and morepreferably is a CompactFlash card. In one aspect, the flash memory cardplugs into remote computer 580 via a PCMCIA slot. Suitable flash memorycards (i.e., a CompactFlash card) are commercially available from memorymanufacturers, including SanDisk and Kingston.

The removable media 584 is removed from remote computer 580 and insertedin gaming system 400. In one aspect, removable media 584 can be“hot-inserted” directly into the controller board of gaming system 400.The removable media 584 contains game layer 402 including the gamespecific code and program files. As such, removable media 584 remainsinserted into gaming system 400 during operation of the gaming system.In an alternative embodiment, the game layer 402 can be transferred(e.g., via a memory download) from removable media 584 to memory insideof gaming system 400.

In one embodiment, the removable media 584 is maintained in gamingsystem 400 during operation of the gaming system. As such, the gamingsystem program files may be verified for authenticity by gamingofficials by simply removing the removable media 584 and inserting it ina computer or controller used for verifying/authenticating game code,indicated at 586.

FIG. 11 is another exemplary embodiment of a gaming system according tothe present invention wherein the game layer is programmable orconfigurable at a location remote from the gaming system 400. In thisembodiment, game layer 402 is configurable over a network basedcommunication system. In one embodiment, network based system 600includes a user interface 602, network or network communication link604, and controller 606. Controller 606 is configured to communicatewith user 610 via network 604. In particular, centralized controller 606includes web server 612. User 610 accesses web server 612 via userinterface 602, and downloads a web page suitable for configuring a gamelayer. In one aspect, the web page includes game specific game templates608, which are utilized for inputting specific user configurations forindividual games. Once a game template 608 has been configured, the gametemplate is transferred to controller 606 via network 604. Controller606 receives the configuration information associated with game template608 and assembles game layer or program 402 using the configurationinformation. Game layer or program 402 can now be downloaded into memoryin gaming system 400 for use by gaming system 400 including the gamespecific configurable options determined by user 610.

The system 600 also allow other user interfaces 614 for configuringgames which may be assembled by controller 606 for use in other gamingsystems. Alternatively, other user interface 614 may be representativeof a gaming official checking the game 402 and authorizing use of thegame 402 and gaming system 400. As such, the game 402 may be transferredto the gaming system 400 via controller 606, or via a communication linkwith user interface 64, which may be a direct connection or may be anetwork. Alternatively, game layer 402 may be transferred fromcontroller 606 or user interface 614 by putting it on a flash memorydevice (e.g., Disk on a Chip or CompactFlash card) and physicallyinserted into gaming system 400.

Network 604, as used herein, is defined to include an internet network(e.g., the Internet), intranet network, or other high-speedcommunication system. In one preferred embodiment, network 44 is theInternet. While the exemplary embodiment and this detailed descriptionrefers to the use of web pages on the Internet network, it is understoodthat the use of other communication networks or next generationcommunication networks or a combination of communication networks (e.g.,and intranet and the Internet) are within the scope of the presentinvention. The assembly of configuration information received from userinterface 602 can be assembled into game layer 402 using hardware via amicroprocessor, programmable logic, or state machine, in firmware, andin software within a given device. In one aspect, at least a portion ofthe software programming is web-based and written in HTML and JAVAprogramming languages, including links to the web pages for datacollection, and each of the main components communicate via network 604using a communication bus protocol. For example, the present inventionmay or may not use a TC/IP protocol suite for data transport. Otherprogramming languages and communication bus protocols suitable for usewith the system 600 according to the present invention will becomeapparent to those skilled in the art after reading the presentapplication.

FIG. 12 is a diagram illustrating one exemplary embodiment of web pagegame templates used in the system shown in FIG. 11. Template 1 is shownat 622 and Template 2 is shown at 624. In one embodiment, upon accessingcontroller 606 via user interface 602, user 610 selects a game type thatthe user 610 would like to either program or configure. Based on thegame type 626, a template appears at user interface 602 for that gametype which allows the user to specify game configurable options,indicated at 628. The controller then operates to assemble the gamelayer or game programs 402 based on the information received via thegame template. The configurable options may include any type of gamespecific configurable options, such as game colors, game sound,percentage payouts, game options, etc.

FIG. 13 is a diagram illustrating one exemplary embodiment ofnonvolatile RAM used in a gaming system 400 according to the presentinvention, wherein the nonvolatile RAM is configured as a redundantmemory system. In one exemplary embodiment shown, the nonvolatile RAM isconfigured as a RAID system. In the hard disk drive industry, RAID(short for redundant array of independent disks) systems employ two ormore disk drives in combination for improved disk drive fault toleranceand disk drive performance. RAID systems stripe a user's data acrossmultiple hard disks. When accessing data, the RAID system allows all ofthe hard disks to work at the same time, providing increase in speed andreliability.

A RAID system configuration as defined by different RAID levels. Thedifferent RAID levels range from LEVEL 0 which provides data striping(spreading out of data blocks of each file across multiple hard disks)resulting in improved disk drive speed and performance but noredundancy. RAID LEVEL 1 provides disk mirroring, resulting in 100percent redundancy of data through mirrored pairs of hard disks (i.e.,identical blocks of data written to two hard disks). Other drive RAIDlevels provide variations of data striping and disk mirroring, and alsoprovide improved error correction for increased performance and faulttolerance.

In FIG. 13, one exemplary embodiment of RAID data storage system used ina gaming system 400 according to the present invention is generallyshown at 630. The RAID storage system 630 includes a controller orcontrol system 632 and multiple nonvolatile RAM data storage units,indicated as RAMA 634 and RAMB 636. In one aspect, RAMA 634 and RAMB 636each include a backup power system PWR 638 and PWR 640. In one aspect,backup power systems PWR 638 and PWR 640 are battery backup systems.RAMA 634 and RAMB 636 are configured to communicate with control system632 as a redundant array of storage devices. Preferably, nonvolatilememory RAMA 634 and nonvolatile memory RAMB 636 are configured similarto a RAID level configuration used in the disk drive industry (i.e., asa “mirrored pair”). Nonvolatile memory RAMA 634 and nonvolatile memoryRAMB 636 communicate with control system 632 via communication bus 638,using a communication bus protocol. One exemplary embodiment of acommunication bus suitable for use as communication bus 638 is anindustry standard ATA or uniform serial bus (USB) communication bus.Control system 632 includes a microprocessor based data processingsystem or other system capable of performing a sequence of logicaloperations. In one aspect, control system 632 is configured to operatethe RAID system 630 nonvolatile memories RAMA 634 and RAMB 636 as amirrored pair. As such, read/write to nonvolatile memory RAMA 634 aremirrored to nonvolatile RAMB 636, providing redundancy of crucial gamingspecific data stored in nonvolatile memory RAMA 634 and RAMB 636.Alternatively, the nonvolatile memory RAMA 634 and nonvolatile memoryRAMB 636 may be configured to communicate with control system 632similar to other RAID storage system levels, such as RAID LEVEL 0, RAIDLEVEL 2, RAID LEVEL 3, RAID LEVEL 4, RAID LEVEL 5, RAID LEVEL 6, etc.Further, the RAID system 630 may include more than the two nonvolatilememories RAMA 634 and RAMB 636 shown.

Although specific embodiments have been illustrated and describedherein, it will be appreciated by those of ordinary skill in the artthat any arrangement which is calculated to achieve the same purpose maybe substituted for the specific embodiments shown. This application isintended to cover any adaptations or variations of the invention. It isintended that this invention be limited only by the claims, and the fullscope of equivalents thereof.

1. A computerized wagering game apparatus for converting a gamingmachine to operate on a universal gaming system, the apparatuscomprising: a computerized game controller having a processor and amemory; a game controller operable to control a first wager-based gameplayed on the gaming machine; a user interface comprising one or moregame devices; a wiring harness for connecting the game controller to theuser interface; and a proprietary operating system comprising softwarethat is written for a specific gaming machine hardware configuration anda specific game installed on the gaming machine; to remove theproprietary operating system from the gaming machine including the gamecontroller operable to execute the proprietary operating system and tocontrol the first wager game played on the gaming machine; install auniversal gaming system operable to control a second wager-based game onthe gaming machine via the user interface, the universal gaming systemincluding a game program layer, an open operating system, a universalcontroller for running the game program layer on the open operatingsystem and a gaming machine specific input/output interface forproviding a communication path between the wiring harness and theuniversal controller, said gaming machine specific input/outputinterface comprising a first interface for coupling to the wiringharness and a second interface for coupling to the universal controllerwherein the universal controller is designed for communicationcompatibility with a plurality of different types of gaming machines viaa particular gaming machine specific input/output interface associatedwith each of the different types of gaming machine and wherein thegaming machine is a first type of gaming machine in the plurality ofdifferent types of gaming machine; provide a system handler applicationproviding functional interfaces between the universal gaming system andthe one or more game devices via the wiring harness wherein thefunctional interfaces include a resource manager for mappinginput/output lines associated with the wiring harness to resources ofthe open operating system; install a game specific program in the gameprogram layer configured to operate with the open operating system, thegaming specific program having gaming program shared objects which areindividually loaded and which call common functions, the system handlerapplication interfacing the gaming program shared objects to game datafor sharing the game data between at least two of the gaming programshared objects; and after installing the game specific program,configure the system handler application to include one or more devicehandlers for interfacing with the one or more game devices, wherein atleast one of the device handlers is configured to act as a protocolmanager to provide bidirectional communication between the one or moregame devices and the open operating system, the one or more devicehandlers further configured to do the following: receive firstinformation from the one or more game devices in accordance with agaming device specific protocol; convert the first information to acommon open operating system protocol usable by the open operatingsystem; provide the first information to the open operating system inaccordance with the common open operating system protocol; receivesecond information from the open operating system in accordance with thecommon open operating system protocol; convert the second information tothe gaming device specific protocol; and send the second information tothe one or more game devices in accordance with the gaming devicespecific protocol.
 2. The apparatus of claim 1, wherein the one or moredevice handlers are selected from the group A consisting of a totalinput/output device handler, a sound device handler, a serial devicehandler, a graphics device handler, a memory manager device handler, anNVRAM device handler, a protocols device handler, a resource managerdevice handler, and a network device handler.
 3. The apparatus of claim1, wherein the processor is further configured to define the openoperating system to include an operating system kernel that executes thesystem handler application.
 4. The apparatus of claim 1, wherein thegaming program shared objects are specific to the type of game played onthe universal gaming system.
 5. The apparatus of claim 1, wherein theprocessor is further configured to configure the game program layer tooperate the game as a slot machine.
 6. The apparatus of claim 1,comprising: wherein the processor is further configured to configure theopen operating system to include a resource manager configured to mapgame specific resources.
 7. The apparatus of claim 1, wherein theprocessor is further configured to convert the game to a cashless gamingsystem including defining the open operating system to include a systemapplication handler, wherein the functional interface between the gamingsystem and the game devices is accomplished via the system applicationhandler, and configure the system handler application to include one ormore device handlers configured to interface with the game devices andto install a card reader device handler; and install a card reader incommunication with the card reader device handler.
 8. The apparatus ofclaim 4, wherein the processor is further configured to change the typeof game played on the universal gaming system by changing the gamingprogram shared objects.
 9. The apparatus of claim 5, wherein theprocessor is further configured to define the slot machine to be amechanical reel-based slot machine.
 10. The apparatus of claim 6,wherein the processor is further configured to parse a configurationfile, map operating system resources based on the configuration file,and store the resource map in memory.
 11. The apparatus of claim 7,wherein the processor is further configured to configure the systemhandler application to include a ticket printer device handler; and toinstall a ticket printer in communication with the ticket printer devicehandler.
 12. The method apparatus of claim 7, wherein the processor isfurther configured to configure the game program layer to include acashless gaming feature.
 13. The apparatus of claim 10, wherein theprocessor is further configured to map input/output lines to systemresources.